package com.example.demo.leetcode;

import java.util.PriorityQueue;
import java.util.Queue;

/**
 * https://leetcode.cn/problems/kth-largest-element-in-an-array/?envType=study-plan-v2&envId=top-100-liked
 *
 * @author WangYX
 * @version 1.0.0
 * @date 2024/03/12 9:42
 */
public class _215_数组中的第K个最大元素 {
    public static void main(String[] args) {


    }

    /**
     * 方法一：优先级队列
     *
     * @param nums 数组
     * @param k
     * @return {@link int}
     * @author WangYX
     * @date 2024/03/12 9:52
     */
    public int findKthLargest(int[] nums, int k) {
        //优先级队列，默认最小值在最前面
        //new PriorityQueue<>((o1, o2) -> o2 - o1);构造时，传入Comparator，把最大值放在最上面
        Queue<Integer> queue = new PriorityQueue<>((o1, o2) -> o2 - o1);

        for (int i = 0; i < nums.length; i++) {
            queue.offer(nums[i]);
        }

        for (int i = 0; i < k - 1; i++) {
            queue.poll();
        }

        return queue.poll();
    }
}
